package www.bancodelanacion.intranet.prestamos.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

import javax.swing.JOptionPane;

import www.bancodelanacion.intranet.prestamos.entidad.ContratoDTO;
import www.bancodelanacion.intranet.prestamos.util.MySqlDBConn;

public class ContratoDAOImpl implements ContratoDAO{

	@Override
	public int insertaContrato(ContratoDTO bean) throws SQLException {
		Connection conn = null;
		PreparedStatement pstm = null;
		try {
				conn = new MySqlDBConn().getConnection();
				String sql ="insert into tb_contrato values(null,?,?,?,?,?,?,?,?,?,?)";
				pstm = conn.prepareStatement(sql);
				pstm.setString(1,bean.getFecha());
				pstm.setString(2,bean.getFechainicio());
				pstm.setString(3,bean.getFechafin());
				pstm.setString(4,bean.getTipocontrato());
				pstm.setString(5,bean.getModalidad());
				pstm.setString(6,bean.getMonto());
				pstm.setString(7,bean.getDescripcion());
				pstm.setString(8,bean.getCodigocliente());
				pstm.setString(9,bean.getCodigotrabajador());
				pstm.setString(10,bean.getCodigoestado());
				return pstm.executeUpdate();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if(pstm!= null)pstm.close();
				if(conn!= null)conn.close();
			} catch (Exception e2) {}
		}
		return -1;
	}

	@Override
	public int actualizaContrato(ContratoDTO bean) throws SQLException {
		Connection conn = null;
		PreparedStatement pstm = null;
		try {
				conn = new MySqlDBConn().getConnection();
				String sql ="update tb_contrato set Fecha=?, Fecha_Inicio=?, Fecha_Fin=?, Tipo_Contrato=?, Modalidad=?, Monto=?, Descripcion=?, Codigo_Cliente=?,Codigo_Estado=? , Codigo_Trabajador=? where Codigo_Contrato=?";
				pstm = conn.prepareStatement(sql);
				pstm.setString(1,bean.getFecha());
				pstm.setString(2,bean.getFechainicio());
				pstm.setString(3,bean.getFechafin());
				pstm.setString(4,bean.getTipocontrato());
				pstm.setString(5,bean.getModalidad());
				pstm.setString(6,bean.getMonto());
				pstm.setString(7,bean.getDescripcion());
				pstm.setString(8,bean.getCodigocliente());
				pstm.setString(9,bean.getCodigotrabajador());
				pstm.setString(10,bean.getCodigoestado());
				pstm.setString(11,bean.getCodigocontrato());
				return pstm.executeUpdate();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if(pstm!= null)pstm.close();
				if(conn!= null)conn.close();
			} catch (Exception e2) {}
		}
		return -1;
	}

	@Override
	public ContratoDTO buscaContratoporCodigo(String codigocontrato) throws SQLException {
		Connection conn = null;
		PreparedStatement pstm = null;
		ResultSet rs = null;
		ContratoDTO dto = new ContratoDTO();
		try {
				conn = new MySqlDBConn().getConnection();
				String sql ="select * from tb_contrato where Codigo_Contrato=?";
				pstm = conn.prepareStatement(sql);
				pstm.setString(1, codigocontrato);
				rs = pstm.executeQuery();
				if(rs.next()){
					dto.setFecha(rs.getString("Fecha"));
					dto.setFechainicio(rs.getString("Fecha_Inicio"));
					dto.setFechafin(rs.getString("Fecha_Fin"));
					dto.setTipocontrato(rs.getString("Tipo_Contrato"));
					dto.setModalidad(rs.getString("Modalidad"));
					dto.setMonto(rs.getString("Monto"));
					dto.setDescripcion(rs.getString("Descripcion"));
					dto.setCodigocliente(rs.getString("Codigo_Cliente"));
					dto.setCodigoestado(rs.getString("Codigo_Estado"));
					dto.setCodigotrabajador(rs.getString("Codigo_Trabajador"));
				}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if(rs!= null)rs.close();
				if(pstm!= null)pstm.close();
				if(conn!= null)conn.close();
			} catch (Exception e2) {}
		}
		return dto;
	}

	@Override
	public ArrayList<ContratoDTO> listaContrato() throws SQLException {
		Connection conn = null;
		PreparedStatement pstm = null;
		ResultSet rs = null;
		ArrayList<ContratoDTO> data = new ArrayList<ContratoDTO>();
		try {
				conn = new MySqlDBConn().getConnection();
				String sql ="select * from tb_contrato";
				pstm = conn.prepareStatement(sql);
				rs = pstm.executeQuery();
				ContratoDTO dto = null;
				while(rs.next()){
					dto = new ContratoDTO();
					dto.setCodigocontrato(rs.getString("Codigo_Contrato"));
					dto.setFecha(rs.getString("Fecha"));
					dto.setFechainicio(rs.getString("Fecha_Inicio"));
					dto.setFechafin(rs.getString("Fecha_Fin"));
					dto.setTipocontrato(rs.getString("Tipo_Contrato"));
					dto.setModalidad(rs.getString("Modalidad"));
					dto.setMonto(rs.getString("Monto"));
					dto.setDescripcion(rs.getString("Descripcion"));
					dto.setCodigocliente(rs.getString("Codigo_Cliente"));
					dto.setCodigoestado(rs.getString("Codigo_Estado"));
					dto.setCodigotrabajador(rs.getString("Codigo_Trabajador"));
					data.add(dto);
				}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if(rs!= null)rs.close();
				if(pstm!= null)pstm.close();
				if(conn!= null)conn.close();
			} catch (Exception e2) {}
		}
		return data;
	}

	@Override
	public ContratoDTO buscaContratoporEstado(String codigoestado)
			throws SQLException {
		Connection conn = null;
		PreparedStatement pstm = null;
		ResultSet rs = null;
		ContratoDTO dto = new ContratoDTO();
		try {
				conn = new MySqlDBConn().getConnection();
				String sql ="select * from tb_contrato where Codigo_Estado=?";
				pstm = conn.prepareStatement(sql);
				pstm.setString(1, codigoestado);
				rs = pstm.executeQuery();
				if(rs.next()){
					dto.setCodigocontrato(rs.getString("Codigo_Contrato"));
					dto.setFecha(rs.getString("Fecha"));
					dto.setFechainicio(rs.getString("Fecha_Inicio"));
					dto.setFechafin(rs.getString("Fecha_Fin"));
					dto.setTipocontrato(rs.getString("Tipo_Contrato"));
					dto.setModalidad(rs.getString("Modalidad"));
					dto.setMonto(rs.getString("Monto"));
					dto.setDescripcion(rs.getString("Descripcion"));
					dto.setCodigocliente(rs.getString("Codigo_Cliente"));
					dto.setCodigotrabajador(rs.getString("Codigo_Trabajador"));
				}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if(rs!= null)rs.close();
				if(pstm!= null)pstm.close();
				if(conn!= null)conn.close();
			} catch (Exception e2) {}
		}
		return dto;
	}

	@Override
	public ContratoDTO buscaContratoporCliente(String codigocliente)
			throws SQLException {
		Connection conn = null;
		PreparedStatement pstm = null;
		ResultSet rs = null;
		ContratoDTO dto = new ContratoDTO();
		try {
				conn = new MySqlDBConn().getConnection();
				String sql ="select * from tb_contrato where Codigo_Cliente=?";
				pstm = conn.prepareStatement(sql);
				pstm.setString(1, codigocliente);
				rs = pstm.executeQuery();
				if(rs.next()){
					dto.setCodigocontrato(rs.getString("Codigo_Contrato"));
					dto.setFecha(rs.getString("Fecha"));
					dto.setFechainicio(rs.getString("Fecha_Inicio"));
					dto.setFechafin(rs.getString("Fecha_Fin"));
					dto.setTipocontrato(rs.getString("Tipo_Contrato"));
					dto.setModalidad(rs.getString("Modalidad"));
					dto.setMonto(rs.getString("Monto"));
					dto.setDescripcion(rs.getString("Descripcion"));
					dto.setCodigoestado(rs.getString("Codigo_Estado"));
					dto.setCodigotrabajador(rs.getString("Codigo_Trabajador"));
				}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if(rs!= null)rs.close();
				if(pstm!= null)pstm.close();
				if(conn!= null)conn.close();
			} catch (Exception e2) {}
		}
		return dto;
	}

	@Override
	public String codigogen() {
		String cod=null;
		Connection conn = null;
		
		try {
			conn = new MySqlDBConn().getConnection();
			Statement s=conn.createStatement();
			ResultSet rs=s.executeQuery(
		"select Codigo_Contrato from tb_contrato order by Codigo_Contrato desc limit 1");

			if(rs.next()){
				 cod=rs.getString(1);
			}
			}catch (SQLException f) {
				JOptionPane.showMessageDialog(null,"SQL PROBLEM");
			}
		
			return  cod;
	}

}
